{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "09dad8a7-af2f-4d1f-8fc1-8c54b4cc525c",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape: (32605, 35)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>seas_id</th>\n",
       "      <th>season</th>\n",
       "      <th>player_id</th>\n",
       "      <th>player</th>\n",
       "      <th>birth_year</th>\n",
       "      <th>pos</th>\n",
       "      <th>age</th>\n",
       "      <th>experience</th>\n",
       "      <th>lg</th>\n",
       "      <th>tm</th>\n",
       "      <th>...</th>\n",
       "      <th>ft_percent</th>\n",
       "      <th>orb_per_game</th>\n",
       "      <th>drb_per_game</th>\n",
       "      <th>trb_per_game</th>\n",
       "      <th>ast_per_game</th>\n",
       "      <th>stl_per_game</th>\n",
       "      <th>blk_per_game</th>\n",
       "      <th>tov_per_game</th>\n",
       "      <th>pf_per_game</th>\n",
       "      <th>pts_per_game</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>32600</th>\n",
       "      <td>200.0</td>\n",
       "      <td>1947</td>\n",
       "      <td>157.0</td>\n",
       "      <td>Walt Miller</td>\n",
       "      <td>NaN</td>\n",
       "      <td>F</td>\n",
       "      <td>31.0</td>\n",
       "      <td>1</td>\n",
       "      <td>BAA</td>\n",
       "      <td>PIT</td>\n",
       "      <td>...</td>\n",
       "      <td>0.500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.5</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.3</td>\n",
       "      <td>1.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32601</th>\n",
       "      <td>201.0</td>\n",
       "      <td>1947</td>\n",
       "      <td>158.0</td>\n",
       "      <td>Warren Fenley</td>\n",
       "      <td>NaN</td>\n",
       "      <td>F</td>\n",
       "      <td>24.0</td>\n",
       "      <td>1</td>\n",
       "      <td>BAA</td>\n",
       "      <td>BOS</td>\n",
       "      <td>...</td>\n",
       "      <td>0.511</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.5</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.8</td>\n",
       "      <td>2.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32602</th>\n",
       "      <td>202.0</td>\n",
       "      <td>1947</td>\n",
       "      <td>159.0</td>\n",
       "      <td>Wilbert Kautz</td>\n",
       "      <td>NaN</td>\n",
       "      <td>G-F</td>\n",
       "      <td>31.0</td>\n",
       "      <td>1</td>\n",
       "      <td>BAA</td>\n",
       "      <td>CHS</td>\n",
       "      <td>...</td>\n",
       "      <td>0.534</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.7</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.3</td>\n",
       "      <td>5.1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32603</th>\n",
       "      <td>203.0</td>\n",
       "      <td>1947</td>\n",
       "      <td>160.0</td>\n",
       "      <td>Woody Grimshaw</td>\n",
       "      <td>NaN</td>\n",
       "      <td>G</td>\n",
       "      <td>27.0</td>\n",
       "      <td>1</td>\n",
       "      <td>BAA</td>\n",
       "      <td>PRO</td>\n",
       "      <td>...</td>\n",
       "      <td>0.477</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.2</td>\n",
       "      <td>2.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32604</th>\n",
       "      <td>204.0</td>\n",
       "      <td>1947</td>\n",
       "      <td>161.0</td>\n",
       "      <td>Wyndol Gray</td>\n",
       "      <td>NaN</td>\n",
       "      <td>G-F</td>\n",
       "      <td>24.0</td>\n",
       "      <td>1</td>\n",
       "      <td>BAA</td>\n",
       "      <td>BOS</td>\n",
       "      <td>...</td>\n",
       "      <td>0.581</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.9</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.9</td>\n",
       "      <td>6.4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 35 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       seas_id  season  player_id          player  birth_year  pos   age  \\\n",
       "32600    200.0    1947      157.0     Walt Miller         NaN    F  31.0   \n",
       "32601    201.0    1947      158.0   Warren Fenley         NaN    F  24.0   \n",
       "32602    202.0    1947      159.0   Wilbert Kautz         NaN  G-F  31.0   \n",
       "32603    203.0    1947      160.0  Woody Grimshaw         NaN    G  27.0   \n",
       "32604    204.0    1947      161.0     Wyndol Gray         NaN  G-F  24.0   \n",
       "\n",
       "       experience   lg   tm  ...  ft_percent  orb_per_game  drb_per_game  \\\n",
       "32600           1  BAA  PIT  ...       0.500           NaN           NaN   \n",
       "32601           1  BAA  BOS  ...       0.511           NaN           NaN   \n",
       "32602           1  BAA  CHS  ...       0.534           NaN           NaN   \n",
       "32603           1  BAA  PRO  ...       0.477           NaN           NaN   \n",
       "32604           1  BAA  BOS  ...       0.581           NaN           NaN   \n",
       "\n",
       "       trb_per_game  ast_per_game  stl_per_game  blk_per_game  tov_per_game  \\\n",
       "32600           NaN           0.5           NaN           NaN           NaN   \n",
       "32601           NaN           0.5           NaN           NaN           NaN   \n",
       "32602           NaN           0.7           NaN           NaN           NaN   \n",
       "32603           NaN           0.0           NaN           NaN           NaN   \n",
       "32604           NaN           0.9           NaN           NaN           NaN   \n",
       "\n",
       "       pf_per_game  pts_per_game  \n",
       "32600          1.3           1.9  \n",
       "32601          1.8           2.6  \n",
       "32602          2.3           5.1  \n",
       "32603          1.2           2.9  \n",
       "32604          1.9           6.4  \n",
       "\n",
       "[5 rows x 35 columns]"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "df = pd.read_csv(\"datasets/player_per_game.csv\")\n",
    "\n",
    "print(\"Shape:\", df.shape)\n",
    "df.tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "3e29ac84-57ea-456e-a298-3de641f0801c",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 32605 entries, 0 to 32604\n",
      "Data columns (total 35 columns):\n",
      " #   Column         Non-Null Count  Dtype  \n",
      "---  ------         --------------  -----  \n",
      " 0   seas_id        32601 non-null  float64\n",
      " 1   season         32605 non-null  int64  \n",
      " 2   player_id      32601 non-null  float64\n",
      " 3   player         32605 non-null  object \n",
      " 4   birth_year     2872 non-null   float64\n",
      " 5   pos            32605 non-null  object \n",
      " 6   age            32583 non-null  float64\n",
      " 7   experience     32605 non-null  int64  \n",
      " 8   lg             32605 non-null  object \n",
      " 9   tm             32605 non-null  object \n",
      " 10  g              32605 non-null  int64  \n",
      " 11  gs             23968 non-null  float64\n",
      " 12  mp_per_game    31522 non-null  float64\n",
      " 13  fg_per_game    32605 non-null  float64\n",
      " 14  fga_per_game   32605 non-null  float64\n",
      " 15  fg_percent     32444 non-null  float64\n",
      " 16  x3p_per_game   26253 non-null  float64\n",
      " 17  x3pa_per_game  26253 non-null  float64\n",
      " 18  x3p_percent    22032 non-null  float64\n",
      " 19  x2p_per_game   32605 non-null  float64\n",
      " 20  x2pa_per_game  32605 non-null  float64\n",
      " 21  x2p_percent    32355 non-null  float64\n",
      " 22  e_fg_percent   32444 non-null  float64\n",
      " 23  ft_per_game    32605 non-null  float64\n",
      " 24  fta_per_game   32605 non-null  float64\n",
      " 25  ft_percent     31272 non-null  float64\n",
      " 26  orb_per_game   27948 non-null  float64\n",
      " 27  drb_per_game   27948 non-null  float64\n",
      " 28  trb_per_game   31711 non-null  float64\n",
      " 29  ast_per_game   32605 non-null  float64\n",
      " 30  stl_per_game   26979 non-null  float64\n",
      " 31  blk_per_game   26980 non-null  float64\n",
      " 32  tov_per_game   26970 non-null  float64\n",
      " 33  pf_per_game    32605 non-null  float64\n",
      " 34  pts_per_game   32605 non-null  float64\n",
      "dtypes: float64(28), int64(3), object(4)\n",
      "memory usage: 8.7+ MB\n"
     ]
    }
   ],
   "source": [
    "#checking for non-numeric columns and missing data\n",
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "2e608844-a297-4541-8d4b-c0f2b11a1bc2",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([2025, 2024, 2023, 2022, 2021, 2020, 2019, 2018, 2017, 2016, 2015,\n",
       "       2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004,\n",
       "       2003, 2002, 2001, 2000, 1999, 1998, 1997, 1996, 1995, 1994, 1993,\n",
       "       1992, 1991, 1990, 1989, 1988, 1987, 1986, 1985, 1984, 1983, 1982,\n",
       "       1981, 1980, 1979, 1978, 1977, 1976, 1975, 1974, 1973, 1972, 1971,\n",
       "       1970, 1969, 1968, 1967, 1966, 1965, 1964, 1963, 1962, 1961, 1960,\n",
       "       1959, 1958, 1957, 1956, 1955, 1954, 1953, 1952, 1951, 1950, 1949,\n",
       "       1948, 1947])"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#finds all seasons in dataset\n",
    "df['season'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "1a6cd10c-76a5-4871-974c-899ca09a1995",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>seas_id</th>\n",
       "      <th>season</th>\n",
       "      <th>player_id</th>\n",
       "      <th>player</th>\n",
       "      <th>birth_year</th>\n",
       "      <th>pos</th>\n",
       "      <th>age</th>\n",
       "      <th>experience</th>\n",
       "      <th>lg</th>\n",
       "      <th>tm</th>\n",
       "      <th>...</th>\n",
       "      <th>ft_percent</th>\n",
       "      <th>orb_per_game</th>\n",
       "      <th>drb_per_game</th>\n",
       "      <th>trb_per_game</th>\n",
       "      <th>ast_per_game</th>\n",
       "      <th>stl_per_game</th>\n",
       "      <th>blk_per_game</th>\n",
       "      <th>tov_per_game</th>\n",
       "      <th>pf_per_game</th>\n",
       "      <th>pts_per_game</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>730</th>\n",
       "      <td>32601.0</td>\n",
       "      <td>2025</td>\n",
       "      <td>4299.0</td>\n",
       "      <td>Zach LaVine</td>\n",
       "      <td>NaN</td>\n",
       "      <td>SG</td>\n",
       "      <td>29.0</td>\n",
       "      <td>11</td>\n",
       "      <td>NBA</td>\n",
       "      <td>SAC</td>\n",
       "      <td>...</td>\n",
       "      <td>0.874</td>\n",
       "      <td>0.3</td>\n",
       "      <td>3.2</td>\n",
       "      <td>3.5</td>\n",
       "      <td>3.8</td>\n",
       "      <td>0.6</td>\n",
       "      <td>0.1</td>\n",
       "      <td>2.7</td>\n",
       "      <td>1.8</td>\n",
       "      <td>22.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>731</th>\n",
       "      <td>32602.0</td>\n",
       "      <td>2025</td>\n",
       "      <td>4898.0</td>\n",
       "      <td>Zeke Nnaji</td>\n",
       "      <td>NaN</td>\n",
       "      <td>PF</td>\n",
       "      <td>24.0</td>\n",
       "      <td>5</td>\n",
       "      <td>NBA</td>\n",
       "      <td>DEN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.614</td>\n",
       "      <td>0.6</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.6</td>\n",
       "      <td>0.4</td>\n",
       "      <td>0.4</td>\n",
       "      <td>0.7</td>\n",
       "      <td>0.2</td>\n",
       "      <td>1.1</td>\n",
       "      <td>3.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>732</th>\n",
       "      <td>32603.0</td>\n",
       "      <td>2025</td>\n",
       "      <td>5024.0</td>\n",
       "      <td>Ziaire Williams</td>\n",
       "      <td>NaN</td>\n",
       "      <td>SF</td>\n",
       "      <td>23.0</td>\n",
       "      <td>4</td>\n",
       "      <td>NBA</td>\n",
       "      <td>BRK</td>\n",
       "      <td>...</td>\n",
       "      <td>0.821</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>4.6</td>\n",
       "      <td>1.3</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.4</td>\n",
       "      <td>1.1</td>\n",
       "      <td>2.4</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>733</th>\n",
       "      <td>32604.0</td>\n",
       "      <td>2025</td>\n",
       "      <td>4803.0</td>\n",
       "      <td>Zion Williamson</td>\n",
       "      <td>NaN</td>\n",
       "      <td>PF</td>\n",
       "      <td>24.0</td>\n",
       "      <td>5</td>\n",
       "      <td>NBA</td>\n",
       "      <td>NOP</td>\n",
       "      <td>...</td>\n",
       "      <td>0.656</td>\n",
       "      <td>2.5</td>\n",
       "      <td>4.7</td>\n",
       "      <td>7.2</td>\n",
       "      <td>5.3</td>\n",
       "      <td>1.2</td>\n",
       "      <td>0.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2.7</td>\n",
       "      <td>24.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>734</th>\n",
       "      <td>32605.0</td>\n",
       "      <td>2025</td>\n",
       "      <td>5313.0</td>\n",
       "      <td>Zyon Pullin</td>\n",
       "      <td>NaN</td>\n",
       "      <td>SG</td>\n",
       "      <td>23.0</td>\n",
       "      <td>1</td>\n",
       "      <td>NBA</td>\n",
       "      <td>MEM</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 35 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     seas_id  season  player_id           player  birth_year pos   age  \\\n",
       "730  32601.0    2025     4299.0      Zach LaVine         NaN  SG  29.0   \n",
       "731  32602.0    2025     4898.0       Zeke Nnaji         NaN  PF  24.0   \n",
       "732  32603.0    2025     5024.0  Ziaire Williams         NaN  SF  23.0   \n",
       "733  32604.0    2025     4803.0  Zion Williamson         NaN  PF  24.0   \n",
       "734  32605.0    2025     5313.0      Zyon Pullin         NaN  SG  23.0   \n",
       "\n",
       "     experience   lg   tm  ...  ft_percent  orb_per_game  drb_per_game  \\\n",
       "730          11  NBA  SAC  ...       0.874           0.3           3.2   \n",
       "731           5  NBA  DEN  ...       0.614           0.6           1.0   \n",
       "732           4  NBA  BRK  ...       0.821           1.0           3.6   \n",
       "733           5  NBA  NOP  ...       0.656           2.5           4.7   \n",
       "734           1  NBA  MEM  ...         NaN           0.0           0.0   \n",
       "\n",
       "     trb_per_game  ast_per_game  stl_per_game  blk_per_game  tov_per_game  \\\n",
       "730           3.5           3.8           0.6           0.1           2.7   \n",
       "731           1.6           0.4           0.4           0.7           0.2   \n",
       "732           4.6           1.3           1.0           0.4           1.1   \n",
       "733           7.2           5.3           1.2           0.9           3.0   \n",
       "734           0.0           0.0           0.0           0.0           0.0   \n",
       "\n",
       "     pf_per_game  pts_per_game  \n",
       "730          1.8          22.4  \n",
       "731          1.1           3.2  \n",
       "732          2.4          10.0  \n",
       "733          2.7          24.6  \n",
       "734          0.0           0.0  \n",
       "\n",
       "[5 rows x 35 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#filter by latest season\n",
    "latest_season = df['season'].max()\n",
    "df = df[df['season'] == latest_season]\n",
    "\n",
    "df = df.reset_index(drop=True)\n",
    "\n",
    "df.tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "ddb5e820-49d2-4d67-a0b1-4ed1324e9e04",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "birth_year      733\n",
       "fg_percent        4\n",
       "x3p_percent      45\n",
       "x2p_percent      11\n",
       "e_fg_percent      4\n",
       "ft_percent       42\n",
       "dtype: int64"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "missing = df.columns[df.isnull().any()]\n",
    "df[missing].isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "47bc37de-7891-4d45-aed9-0aa788e6afbb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>seas_id</th>\n",
       "      <th>season</th>\n",
       "      <th>player_id</th>\n",
       "      <th>player</th>\n",
       "      <th>birth_year</th>\n",
       "      <th>pos</th>\n",
       "      <th>age</th>\n",
       "      <th>experience</th>\n",
       "      <th>lg</th>\n",
       "      <th>tm</th>\n",
       "      <th>...</th>\n",
       "      <th>ft_percent</th>\n",
       "      <th>orb_per_game</th>\n",
       "      <th>drb_per_game</th>\n",
       "      <th>trb_per_game</th>\n",
       "      <th>ast_per_game</th>\n",
       "      <th>stl_per_game</th>\n",
       "      <th>blk_per_game</th>\n",
       "      <th>tov_per_game</th>\n",
       "      <th>pf_per_game</th>\n",
       "      <th>pts_per_game</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>31871.0</td>\n",
       "      <td>2025</td>\n",
       "      <td>5025.0</td>\n",
       "      <td>A.J. Green</td>\n",
       "      <td>NaN</td>\n",
       "      <td>SG</td>\n",
       "      <td>25.0</td>\n",
       "      <td>3</td>\n",
       "      <td>NBA</td>\n",
       "      <td>MIL</td>\n",
       "      <td>...</td>\n",
       "      <td>0.815</td>\n",
       "      <td>0.2</td>\n",
       "      <td>2.1</td>\n",
       "      <td>2.4</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.5</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0.5</td>\n",
       "      <td>2.2</td>\n",
       "      <td>7.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>31872.0</td>\n",
       "      <td>2025</td>\n",
       "      <td>5026.0</td>\n",
       "      <td>A.J. Lawson</td>\n",
       "      <td>NaN</td>\n",
       "      <td>SG</td>\n",
       "      <td>24.0</td>\n",
       "      <td>3</td>\n",
       "      <td>NBA</td>\n",
       "      <td>TOR</td>\n",
       "      <td>...</td>\n",
       "      <td>0.683</td>\n",
       "      <td>0.8</td>\n",
       "      <td>2.5</td>\n",
       "      <td>3.3</td>\n",
       "      <td>1.2</td>\n",
       "      <td>0.5</td>\n",
       "      <td>0.2</td>\n",
       "      <td>0.6</td>\n",
       "      <td>1.7</td>\n",
       "      <td>9.1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>31873.0</td>\n",
       "      <td>2025</td>\n",
       "      <td>5210.0</td>\n",
       "      <td>AJ Johnson</td>\n",
       "      <td>NaN</td>\n",
       "      <td>SG</td>\n",
       "      <td>20.0</td>\n",
       "      <td>1</td>\n",
       "      <td>NBA</td>\n",
       "      <td>TOT</td>\n",
       "      <td>...</td>\n",
       "      <td>0.865</td>\n",
       "      <td>0.3</td>\n",
       "      <td>1.8</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.6</td>\n",
       "      <td>0.4</td>\n",
       "      <td>0.1</td>\n",
       "      <td>1.2</td>\n",
       "      <td>1.7</td>\n",
       "      <td>7.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>31874.0</td>\n",
       "      <td>2025</td>\n",
       "      <td>5210.0</td>\n",
       "      <td>AJ Johnson</td>\n",
       "      <td>NaN</td>\n",
       "      <td>SG</td>\n",
       "      <td>20.0</td>\n",
       "      <td>1</td>\n",
       "      <td>NBA</td>\n",
       "      <td>MIL</td>\n",
       "      <td>...</td>\n",
       "      <td>0.500</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.6</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>31875.0</td>\n",
       "      <td>2025</td>\n",
       "      <td>5210.0</td>\n",
       "      <td>AJ Johnson</td>\n",
       "      <td>NaN</td>\n",
       "      <td>SG</td>\n",
       "      <td>20.0</td>\n",
       "      <td>1</td>\n",
       "      <td>NBA</td>\n",
       "      <td>WAS</td>\n",
       "      <td>...</td>\n",
       "      <td>0.886</td>\n",
       "      <td>0.4</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.4</td>\n",
       "      <td>3.1</td>\n",
       "      <td>0.5</td>\n",
       "      <td>0.1</td>\n",
       "      <td>1.4</td>\n",
       "      <td>2.3</td>\n",
       "      <td>9.1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 35 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   seas_id  season  player_id       player  birth_year pos   age  experience  \\\n",
       "0  31871.0    2025     5025.0   A.J. Green         NaN  SG  25.0           3   \n",
       "1  31872.0    2025     5026.0  A.J. Lawson         NaN  SG  24.0           3   \n",
       "2  31873.0    2025     5210.0   AJ Johnson         NaN  SG  20.0           1   \n",
       "3  31874.0    2025     5210.0   AJ Johnson         NaN  SG  20.0           1   \n",
       "4  31875.0    2025     5210.0   AJ Johnson         NaN  SG  20.0           1   \n",
       "\n",
       "    lg   tm  ...  ft_percent  orb_per_game  drb_per_game  trb_per_game  \\\n",
       "0  NBA  MIL  ...       0.815           0.2           2.1           2.4   \n",
       "1  NBA  TOR  ...       0.683           0.8           2.5           3.3   \n",
       "2  NBA  TOT  ...       0.865           0.3           1.8           2.0   \n",
       "3  NBA  MIL  ...       0.500           0.0           1.0           1.0   \n",
       "4  NBA  WAS  ...       0.886           0.4           2.0           2.4   \n",
       "\n",
       "   ast_per_game  stl_per_game  blk_per_game  tov_per_game  pf_per_game  \\\n",
       "0           1.5           0.5           0.1           0.5          2.2   \n",
       "1           1.2           0.5           0.2           0.6          1.7   \n",
       "2           2.6           0.4           0.1           1.2          1.7   \n",
       "3           1.0           0.1           0.0           0.6          0.0   \n",
       "4           3.1           0.5           0.1           1.4          2.3   \n",
       "\n",
       "   pts_per_game  \n",
       "0           7.4  \n",
       "1           9.1  \n",
       "2           7.6  \n",
       "3           2.9  \n",
       "4           9.1  \n",
       "\n",
       "[5 rows x 35 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "4eaa9063-6aa0-4999-b665-51655120aae5",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>seas_id</th>\n",
       "      <th>season</th>\n",
       "      <th>player_id</th>\n",
       "      <th>player</th>\n",
       "      <th>pos</th>\n",
       "      <th>age</th>\n",
       "      <th>g</th>\n",
       "      <th>gs</th>\n",
       "      <th>mp_per_game</th>\n",
       "      <th>fg_per_game</th>\n",
       "      <th>...</th>\n",
       "      <th>ft_percent</th>\n",
       "      <th>orb_per_game</th>\n",
       "      <th>drb_per_game</th>\n",
       "      <th>trb_per_game</th>\n",
       "      <th>ast_per_game</th>\n",
       "      <th>stl_per_game</th>\n",
       "      <th>blk_per_game</th>\n",
       "      <th>tov_per_game</th>\n",
       "      <th>pf_per_game</th>\n",
       "      <th>pts_per_game</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>31871.0</td>\n",
       "      <td>2025</td>\n",
       "      <td>5025.0</td>\n",
       "      <td>A.J. Green</td>\n",
       "      <td>SG</td>\n",
       "      <td>25.0</td>\n",
       "      <td>73</td>\n",
       "      <td>7.0</td>\n",
       "      <td>22.7</td>\n",
       "      <td>2.5</td>\n",
       "      <td>...</td>\n",
       "      <td>0.815</td>\n",
       "      <td>0.2</td>\n",
       "      <td>2.1</td>\n",
       "      <td>2.4</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.5</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0.5</td>\n",
       "      <td>2.2</td>\n",
       "      <td>7.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>31872.0</td>\n",
       "      <td>2025</td>\n",
       "      <td>5026.0</td>\n",
       "      <td>A.J. Lawson</td>\n",
       "      <td>SG</td>\n",
       "      <td>24.0</td>\n",
       "      <td>26</td>\n",
       "      <td>2.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>3.1</td>\n",
       "      <td>...</td>\n",
       "      <td>0.683</td>\n",
       "      <td>0.8</td>\n",
       "      <td>2.5</td>\n",
       "      <td>3.3</td>\n",
       "      <td>1.2</td>\n",
       "      <td>0.5</td>\n",
       "      <td>0.2</td>\n",
       "      <td>0.6</td>\n",
       "      <td>1.7</td>\n",
       "      <td>9.1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>31873.0</td>\n",
       "      <td>2025</td>\n",
       "      <td>5210.0</td>\n",
       "      <td>AJ Johnson</td>\n",
       "      <td>SG</td>\n",
       "      <td>20.0</td>\n",
       "      <td>29</td>\n",
       "      <td>11.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>2.8</td>\n",
       "      <td>...</td>\n",
       "      <td>0.865</td>\n",
       "      <td>0.3</td>\n",
       "      <td>1.8</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.6</td>\n",
       "      <td>0.4</td>\n",
       "      <td>0.1</td>\n",
       "      <td>1.2</td>\n",
       "      <td>1.7</td>\n",
       "      <td>7.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>31874.0</td>\n",
       "      <td>2025</td>\n",
       "      <td>5210.0</td>\n",
       "      <td>AJ Johnson</td>\n",
       "      <td>SG</td>\n",
       "      <td>20.0</td>\n",
       "      <td>7</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6.3</td>\n",
       "      <td>1.1</td>\n",
       "      <td>...</td>\n",
       "      <td>0.500</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.6</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>31875.0</td>\n",
       "      <td>2025</td>\n",
       "      <td>5210.0</td>\n",
       "      <td>AJ Johnson</td>\n",
       "      <td>SG</td>\n",
       "      <td>20.0</td>\n",
       "      <td>22</td>\n",
       "      <td>11.0</td>\n",
       "      <td>27.0</td>\n",
       "      <td>3.4</td>\n",
       "      <td>...</td>\n",
       "      <td>0.886</td>\n",
       "      <td>0.4</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.4</td>\n",
       "      <td>3.1</td>\n",
       "      <td>0.5</td>\n",
       "      <td>0.1</td>\n",
       "      <td>1.4</td>\n",
       "      <td>2.3</td>\n",
       "      <td>9.1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 31 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   seas_id  season  player_id       player pos   age   g    gs  mp_per_game  \\\n",
       "0  31871.0    2025     5025.0   A.J. Green  SG  25.0  73   7.0         22.7   \n",
       "1  31872.0    2025     5026.0  A.J. Lawson  SG  24.0  26   2.0         18.7   \n",
       "2  31873.0    2025     5210.0   AJ Johnson  SG  20.0  29  11.0         22.0   \n",
       "3  31874.0    2025     5210.0   AJ Johnson  SG  20.0   7   0.0          6.3   \n",
       "4  31875.0    2025     5210.0   AJ Johnson  SG  20.0  22  11.0         27.0   \n",
       "\n",
       "   fg_per_game  ...  ft_percent  orb_per_game  drb_per_game  trb_per_game  \\\n",
       "0          2.5  ...       0.815           0.2           2.1           2.4   \n",
       "1          3.1  ...       0.683           0.8           2.5           3.3   \n",
       "2          2.8  ...       0.865           0.3           1.8           2.0   \n",
       "3          1.1  ...       0.500           0.0           1.0           1.0   \n",
       "4          3.4  ...       0.886           0.4           2.0           2.4   \n",
       "\n",
       "   ast_per_game  stl_per_game  blk_per_game  tov_per_game  pf_per_game  \\\n",
       "0           1.5           0.5           0.1           0.5          2.2   \n",
       "1           1.2           0.5           0.2           0.6          1.7   \n",
       "2           2.6           0.4           0.1           1.2          1.7   \n",
       "3           1.0           0.1           0.0           0.6          0.0   \n",
       "4           3.1           0.5           0.1           1.4          2.3   \n",
       "\n",
       "   pts_per_game  \n",
       "0           7.4  \n",
       "1           9.1  \n",
       "2           7.6  \n",
       "3           2.9  \n",
       "4           9.1  \n",
       "\n",
       "[5 rows x 31 columns]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#keep reference of player names\n",
    "player_names = df['player']\n",
    "\n",
    "df = df.drop(columns=['birth_year', 'experience', 'lg', 'tm',], errors='ignore')\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "07a14c2c-9b0f-48fa-881e-5984509dbab4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>seas_id</th>\n",
       "      <th>season</th>\n",
       "      <th>player_id</th>\n",
       "      <th>player</th>\n",
       "      <th>pos</th>\n",
       "      <th>age</th>\n",
       "      <th>g</th>\n",
       "      <th>gs</th>\n",
       "      <th>mp_per_game</th>\n",
       "      <th>fg_per_game</th>\n",
       "      <th>...</th>\n",
       "      <th>fta_per_game</th>\n",
       "      <th>orb_per_game</th>\n",
       "      <th>drb_per_game</th>\n",
       "      <th>trb_per_game</th>\n",
       "      <th>ast_per_game</th>\n",
       "      <th>stl_per_game</th>\n",
       "      <th>blk_per_game</th>\n",
       "      <th>tov_per_game</th>\n",
       "      <th>pf_per_game</th>\n",
       "      <th>pts_per_game</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>31871.0</td>\n",
       "      <td>2025</td>\n",
       "      <td>5025.0</td>\n",
       "      <td>A.J. Green</td>\n",
       "      <td>SG</td>\n",
       "      <td>25.0</td>\n",
       "      <td>73</td>\n",
       "      <td>7.0</td>\n",
       "      <td>22.7</td>\n",
       "      <td>2.5</td>\n",
       "      <td>...</td>\n",
       "      <td>0.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>2.1</td>\n",
       "      <td>2.4</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.5</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0.5</td>\n",
       "      <td>2.2</td>\n",
       "      <td>7.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>31872.0</td>\n",
       "      <td>2025</td>\n",
       "      <td>5026.0</td>\n",
       "      <td>A.J. Lawson</td>\n",
       "      <td>SG</td>\n",
       "      <td>24.0</td>\n",
       "      <td>26</td>\n",
       "      <td>2.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>3.1</td>\n",
       "      <td>...</td>\n",
       "      <td>2.4</td>\n",
       "      <td>0.8</td>\n",
       "      <td>2.5</td>\n",
       "      <td>3.3</td>\n",
       "      <td>1.2</td>\n",
       "      <td>0.5</td>\n",
       "      <td>0.2</td>\n",
       "      <td>0.6</td>\n",
       "      <td>1.7</td>\n",
       "      <td>9.1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>31873.0</td>\n",
       "      <td>2025</td>\n",
       "      <td>5210.0</td>\n",
       "      <td>AJ Johnson</td>\n",
       "      <td>SG</td>\n",
       "      <td>20.0</td>\n",
       "      <td>29</td>\n",
       "      <td>11.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>2.8</td>\n",
       "      <td>...</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.3</td>\n",
       "      <td>1.8</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.6</td>\n",
       "      <td>0.4</td>\n",
       "      <td>0.1</td>\n",
       "      <td>1.2</td>\n",
       "      <td>1.7</td>\n",
       "      <td>7.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>31874.0</td>\n",
       "      <td>2025</td>\n",
       "      <td>5210.0</td>\n",
       "      <td>AJ Johnson</td>\n",
       "      <td>SG</td>\n",
       "      <td>20.0</td>\n",
       "      <td>7</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6.3</td>\n",
       "      <td>1.1</td>\n",
       "      <td>...</td>\n",
       "      <td>0.3</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.6</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>31875.0</td>\n",
       "      <td>2025</td>\n",
       "      <td>5210.0</td>\n",
       "      <td>AJ Johnson</td>\n",
       "      <td>SG</td>\n",
       "      <td>20.0</td>\n",
       "      <td>22</td>\n",
       "      <td>11.0</td>\n",
       "      <td>27.0</td>\n",
       "      <td>3.4</td>\n",
       "      <td>...</td>\n",
       "      <td>1.6</td>\n",
       "      <td>0.4</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.4</td>\n",
       "      <td>3.1</td>\n",
       "      <td>0.5</td>\n",
       "      <td>0.1</td>\n",
       "      <td>1.4</td>\n",
       "      <td>2.3</td>\n",
       "      <td>9.1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 26 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   seas_id  season  player_id       player pos   age   g    gs  mp_per_game  \\\n",
       "0  31871.0    2025     5025.0   A.J. Green  SG  25.0  73   7.0         22.7   \n",
       "1  31872.0    2025     5026.0  A.J. Lawson  SG  24.0  26   2.0         18.7   \n",
       "2  31873.0    2025     5210.0   AJ Johnson  SG  20.0  29  11.0         22.0   \n",
       "3  31874.0    2025     5210.0   AJ Johnson  SG  20.0   7   0.0          6.3   \n",
       "4  31875.0    2025     5210.0   AJ Johnson  SG  20.0  22  11.0         27.0   \n",
       "\n",
       "   fg_per_game  ...  fta_per_game  orb_per_game  drb_per_game  trb_per_game  \\\n",
       "0          2.5  ...           0.4           0.2           2.1           2.4   \n",
       "1          3.1  ...           2.4           0.8           2.5           3.3   \n",
       "2          2.8  ...           1.3           0.3           1.8           2.0   \n",
       "3          1.1  ...           0.3           0.0           1.0           1.0   \n",
       "4          3.4  ...           1.6           0.4           2.0           2.4   \n",
       "\n",
       "   ast_per_game  stl_per_game  blk_per_game  tov_per_game  pf_per_game  \\\n",
       "0           1.5           0.5           0.1           0.5          2.2   \n",
       "1           1.2           0.5           0.2           0.6          1.7   \n",
       "2           2.6           0.4           0.1           1.2          1.7   \n",
       "3           1.0           0.1           0.0           0.6          0.0   \n",
       "4           3.1           0.5           0.1           1.4          2.3   \n",
       "\n",
       "   pts_per_game  \n",
       "0           7.4  \n",
       "1           9.1  \n",
       "2           7.6  \n",
       "3           2.9  \n",
       "4           9.1  \n",
       "\n",
       "[5 rows x 26 columns]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# dropping all percentage stats to avoid nan values or filling in false 0 instead of nan\n",
    "df = df.drop(columns=[col for col in df.columns if 'percent' in col])\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "c85bec25-bb27-4005-a8a2-0fe26e31ace8",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['seas_id',\n",
       " 'season',\n",
       " 'player_id',\n",
       " 'player',\n",
       " 'pos',\n",
       " 'age',\n",
       " 'g',\n",
       " 'gs',\n",
       " 'mp_per_game',\n",
       " 'fg_per_game',\n",
       " 'fga_per_game',\n",
       " 'x3p_per_game',\n",
       " 'x3pa_per_game',\n",
       " 'x2p_per_game',\n",
       " 'x2pa_per_game',\n",
       " 'ft_per_game',\n",
       " 'fta_per_game',\n",
       " 'orb_per_game',\n",
       " 'drb_per_game',\n",
       " 'trb_per_game',\n",
       " 'ast_per_game',\n",
       " 'stl_per_game',\n",
       " 'blk_per_game',\n",
       " 'tov_per_game',\n",
       " 'pf_per_game',\n",
       " 'pts_per_game']"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#checking for nan values \n",
    "df[df.columns[df.isna().any()]].isna().sum()\n",
    "\n",
    "#list of all current columns\n",
    "df.columns.tolist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "d9855ca6-26a4-4aad-bb18-0032772f048c",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "features = df[[\n",
    "    'g', 'mp_per_game', 'fg_per_game', 'fga_per_game', 'x3p_per_game', 'x3pa_per_game',\n",
    "    'ft_per_game', 'fta_per_game', 'trb_per_game', 'ast_per_game', 'tov_per_game'\n",
    "]]\n",
    "target = df['pts_per_game']\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(\n",
    "    features, target, test_size=0.2, random_state=42\n",
    ")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "3031b2ed-dbf3-48d7-88b6-87e35ca96302",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "model = LinearRegression()\n",
    "model.fit(X_train, y_train)\n",
    "\n",
    "y_pred = model.predict(X_test)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "2d747242-b497-4cf0-b098-58c6c0ae011d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "r2 score: 0.9998764347062944\n",
      "RMSE: 0.07523661118360173\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import mean_squared_error, r2_score\n",
    "import numpy as np\n",
    "\n",
    "#how much variance in scoring (closer to 1 = better)\n",
    "print(\"r2 score:\", r2_score(y_test, y_pred))\n",
    "\n",
    "#average error in predicted ppg (lower = better) \n",
    "rsme = np.sqrt(mean_squared_error(y_test, y_pred))\n",
    "print(\"RMSE:\", rsme)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "2b85fe70-2609-4c1e-aec7-e6f3caa3a7a9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Actual ppg</th>\n",
       "      <th>Predicted ppg</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>10.5</td>\n",
       "      <td>10.507368</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>19.0</td>\n",
       "      <td>19.104328</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>8.7</td>\n",
       "      <td>8.805970</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>24.0</td>\n",
       "      <td>23.911132</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>16.3</td>\n",
       "      <td>16.403832</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Actual ppg  Predicted ppg\n",
       "0        10.5      10.507368\n",
       "1        19.0      19.104328\n",
       "2         8.7       8.805970\n",
       "3        24.0      23.911132\n",
       "4        16.3      16.403832"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "comparison_df = pd.DataFrame({\n",
    "    'Actual ppg': y_test.values,\n",
    "    'Predicted ppg': y_pred\n",
    "})\n",
    "comparison_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "af48ea9c-74df-41d9-8d18-e71d734408da",
   "metadata": {},
   "outputs": [],
   "source": [
    "features_to_export = X_test.copy()\n",
    "features_to_export['actual_ppg'] = y_test.values\n",
    "features_to_export['predicted_ppg'] = y_pred\n",
    "features_to_export['prediction_error'] = features_to_export['predicted_ppg'] - features_to_export['actual_ppg']\n",
    "\n",
    "\n",
    "#reset index for tableau\n",
    "features_to_export.reset_index(drop=True, inplace=True)\n",
    "\n",
    "features_to_export.to_csv(\"nba_ppg_predictions.csv\", index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "f448d5fe-17de-4862-8212-cab956a18fc6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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CkjDJZ6DqFsUjeVFkBLHuT/x+cXkHPG8xMiraIUljlcE+AEi4InRWNHy6VA9aUeKaCslRgRFqylRFyu+pujxum/fPtnPVoxyDtR7it6zzz33nGxVJZryi4ls//3f/y0/7kjLlh7vOR2LYxwNot72kUcekS3XRJ3twMpZAyucicfEOfikGloiGgWj3LWAiOLcsmXLZIsi0SLok1x99dWWzWaz2tra5P329nbrpptusgoLCy273S7bZolWRQOPC08//bRsNaXr+kFtlEQbKPGxoj3RaaedJltxHdgOS7RWEq2OROsmsd+JJ55oPfPMM/LriG1H2w5rgNfrtVwul/yY//u//zvo8bvvvtuaP3++lZaWJvebMmWK9aMf/cgKhUKD+4jn8kntvg4k9rvxxhsPu89AO6zHH3/8kI9v3LjRWr58uZWZmSm/F+L5f+Yzn7HWrFkzZL+1a9dac+fOledEtNZ64IEHBltDHakl2fGe05E+xsO1wzqSgc8nWlkNh2ir9ZWvfMWqqKiQr4WB837DDTdYmzZtGtbnIKKRoYj/jEYgJiIiIiIaSaxxJSIiIqK4wOBKRERERHGBwZWIiIiI4gKDKxERERHFBQZXIiIiIooLDK5EREREFBfG/QIEYp3shoYG2RD7cMtMEhEREVF0iO6sYrGbgoICubBHwgZXEVqLi4ujfRhEREREdARiee/DrUY37oOrGGkd+EaIpQVHWzgcxgsvvIClS5fCZrON+tej4eF5iU08L7GJ5yV28dzEJp6X4+f1euVA40BuS9jgOlAeIELrWAVXt9stvxZ/eGMHz0ts4nmJTTwvsYvnJjbxvIycI5V1cnIWEREREcUFBlciIiIiigsMrkREREQUFxhciYiIiCguMLgSERERUVxgcCUiIiKiuMDgSkRERERxgcGViIiIiOICgysRERERxQUGVyIiIiKKCwyuRERERBQXGFyJiIiIKC4wuBIRERFRXNCjfQBEREREFDtM08Lu9j70BCJIceoozUyCqiqIBQyuRERERCRt3deNlRvqUd3Si2DYhMOmoiInGSvmFGFGoQfRxuBKRERERBCh9f41VejoCyHf44LLo8EfMrClvhv7Ov342uLKqIdX1rgSERERJTjTtORIqwitFdlJSHZo0FQFyU5djriK7as27JP7RRODKxEREVGC293eJ8sDCpJ12Pe+C71p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",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.figure(figsize=(8, 6))\n",
    "plt.scatter(y_test, y_pred, alpha=0.6)\n",
    "plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], '--', color='gray')\n",
    "plt.xlabel(\"Actual PPG\")\n",
    "plt.ylabel(\"Predicted PPG\")\n",
    "plt.title(\"Actual vs. Predicted PPG\")\n",
    "plt.grid(True)\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
